/**
 * 项目常量定义
 */

/**
 * 本地存储键名
 */
export const StorageKeys = {
  /** 访问令牌 */
  ACCESS_TOKEN: 'access_token',
  /** 刷新令牌 */
  REFRESH_TOKEN: 'refresh_token',
  /** 用户信息 */
  USER_INFO: 'user_info',
  /** 主题设置 */
  THEME_SETTINGS: 'theme_settings',
  /** 语言设置 */
  LOCALE: 'locale',
  /** 购物车数据 */
  CART_DATA: 'cart_data'
} as const

/**
 * HTTP状态码
 */
export const HttpStatus = {
  /** 成功 */
  OK: 200,
  /** 已创建 */
  CREATED: 201,
  /** 已接受 */
  ACCEPTED: 202,
  /** 无内容 */
  NO_CONTENT: 204,
  /** 客户端错误 */
  BAD_REQUEST: 400,
  /** 未授权 */
  UNAUTHORIZED: 401,
  /** 禁止访问 */
  FORBIDDEN: 403,
  /** 未找到 */
  NOT_FOUND: 404,
  /** 方法不允许 */
  METHOD_NOT_ALLOWED: 405,
  /** 服务器错误 */
  INTERNAL_SERVER_ERROR: 500,
  /** 服务不可用 */
  SERVICE_UNAVAILABLE: 503
} as const

/**
 * 业务状态码
 */
export const BusinessCode = {
  /** 成功 */
  SUCCESS: 0,
  /** 未登录 */
  NOT_LOGIN: 10001,
  /** 无权限 */
  NO_PERMISSION: 10002,
  /** 参数错误 */
  PARAM_ERROR: 10003,
  /** 业务错误 */
  BUSINESS_ERROR: 10004,
  /** 系统错误 */
  SYSTEM_ERROR: 10005
} as const

/**
 * 订单状态
 */
export const OrderStatus = {
  /** 待付款 */
  PENDING_PAYMENT: 0,
  /** 待发货 */
  PENDING_DELIVERY: 1,
  /** 待收货 */
  PENDING_RECEIVE: 2,
  /** 已完成 */
  COMPLETED: 3,
  /** 已取消 */
  CANCELLED: 4,
  /** 已退款 */
  REFUNDED: 5
} as const

/**
 * 支付方式
 */
export const PaymentType = {
  /** 微信支付 */
  WECHAT: 1,
  /** 支付宝 */
  ALIPAY: 2,
  /** 银联 */
  UNIONPAY: 3,
  /** 余额支付 */
  BALANCE: 4
} as const

/**
 * 用户状态
 */
export const UserStatus = {
  /** 禁用 */
  DISABLED: 0,
  /** 启用 */
  ENABLED: 1
} as const

/**
 * 商品状态
 */
export const ProductStatus = {
  /** 下架 */
  OFF_SHELF: 0,
  /** 上架 */
  ON_SHELF: 1
} as const

/**
 * 分页配置
 */
export const PaginationConfig = {
  /** 默认页码 */
  DEFAULT_PAGE: 1,
  /** 默认每页条数 */
  DEFAULT_PAGE_SIZE: 10,
  /** 每页条数选项 */
  PAGE_SIZE_OPTIONS: ['10', '20', '50', '100']
} as const

/**
 * 主题配置
 */
export const ThemeConfig = {
  /** 主题模式 */
  THEME_MODE: {
    LIGHT: 'light',
    DARK: 'dark',
    AUTO: 'auto'
  },
  /** 布局模式 */
  LAYOUT_MODE: {
    SIDE: 'side',
    TOP: 'top',
    MIX: 'mix'
  },
  /** 内容区域宽度 */
  CONTENT_WIDTH: {
    FIXED: 'fixed',
    FLUID: 'fluid'
  }
} as const

/**
 * 语言配置
 */
export const LocaleConfig = {
  /** 中文 */
  ZH_CN: 'zh-CN',
  /** 英文 */
  EN_US: 'en-US'
} as const

/**
 * 设备类型
 */
export const DeviceType = {
  /** 移动设备 */
  MOBILE: 'mobile',
  /** 平板设备 */
  TABLET: 'tablet',
  /** 桌面设备 */
  DESKTOP: 'desktop'
} as const

/**
 * 文件上传配置
 */
export const UploadConfig = {
  /** 最大文件大小（字节） */
  MAX_FILE_SIZE: 10 * 1024 * 1024,
  /** 支持的图片类型 */
  ACCEPT_IMAGE_TYPES: ['.jpg', '.jpeg', '.png', '.gif'],
  /** 支持的文件类型 */
  ACCEPT_FILE_TYPES: ['.jpg', '.jpeg', '.png', '.gif', '.pdf', '.doc', '.docx', '.xls', '.xlsx']
} as const

/**
 * 正则表达式
 */
export const RegExp = {
  /** 手机号 */
  PHONE: /^1[3-9]\d{9}$/,
  /** 邮箱 */
  EMAIL: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
  /** 密码（至少8位，包含数字和字母） */
  PASSWORD: /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/,
  /** 身份证号 */
  ID_CARD: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
  /** URL */
  URL: /^(https?:\/\/)?([\da-z.-]+)\.([a-z.]{2,6})([/\w .-]*)*\/?$/,
  /** IPv4地址 */
  IPV4: /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/
} as const

/**
 * 时间格式
 */
export const DateFormat = {
  /** 年月日 */
  DATE: 'YYYY-MM-DD',
  /** 年月日时分 */
  DATE_TIME: 'YYYY-MM-DD HH:mm',
  /** 年月日时分秒 */
  DATE_TIME_SECOND: 'YYYY-MM-DD HH:mm:ss',
  /** 时分 */
  TIME: 'HH:mm',
  /** 时分秒 */
  TIME_SECOND: 'HH:mm:ss'
} as const